交換排序
基本思想: 所謂交換,就是根據序列中兩個記錄鍵值的比較結果來對換這兩個記錄在序列中的位置,交換排序的特點是:將鍵值較大的記錄向序列的尾部移動,鍵值較小的記錄向序列的前部移動。
冒泡排序
void BubbleSort(int* a, int n)
{
? ? for (int j = 0; j < n; j++)
? ? {
? ? ? ? int exchange = 0;//設置一個初值為0的變量,看這一次排序數組是否有變化
? ? ? ? for (int i = 1; i < n - j; i++)
? ? ? ? {
? ? ? ? ? ? if (a[i - 1] > a[i])
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Swap(&a[i - 1], &a[i]);
? ? ? ? ? ? ? ? exchange = 1;//如果發生了交換,則將exchange的值變為1
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if (exchange == 0)//exchange為0的話說明這一趟排序數組是有序的
? ? ? ? ? ? ? ? ? ? ? ? ? //所以跳出這一趟循環
? ? ? ? {
? ? ? ? ? ? break;
? ? ? ? }
? ? }
}
冒泡排序的特性總結:
- 冒泡排序是一種非常容易理解的排序
- 時間復雜度:O(N^2)
- 空間復雜度:O(1)
- 穩定性:穩定
-